home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / dev / lang / sbp3_1e.lzh / FORALL.PL < prev    next >
Text File  |  1991-10-31  |  802b  |  33 lines

  1. /* From the book PROLOG PROGRAMMING IN DEPTH
  2.    by Michael A. Covington, Donald Nute, and Andre Vellino.
  3.    Copyright 1988 Scott, Foresman & Co.
  4.    Non-commercial distribution of this file is permitted. */
  5. /* Modified for Quintus Prolog by Andreas Siebert */
  6.  
  7. /* FORALL.PL */
  8.  
  9. /*****************************************
  10.  * for_all(GoalA,GoalB)                  *
  11.  *  Succeeds if all instantiations that  *
  12.  *  satisfy GoalA also satisfy GoalB.    *
  13.  *  (There must be at least one such     *
  14.  *  instantiation.)                      *
  15.  *****************************************/
  16.  
  17. for_all(GoalA,GoalB) :-
  18.      \+ (call(GoalA), \+ call(GoalB)),
  19.      call(GoalA),
  20.      !.
  21.  
  22.  
  23. /* Test knowledge base */
  24.  
  25. dog(fido).
  26. dog(rover).
  27. dog(X) :- bulldog(X).
  28.  
  29. bulldog(bucephalus).
  30.  
  31. animal(X) :- dog(X).
  32. animal(felix).
  33.